package cn.iocoder.an.module.business.controller.admin.auditplan.vo;

import cn.iocoder.an.module.business.dal.dataobject.auditlevel.AuditLevelDO;
import cn.iocoder.an.module.business.dal.dataobject.audittype.AuditTypeDO;
import cn.iocoder.an.module.business.dal.dataobject.equipmentmanage.EquipmentManageDO;
import com.fhs.core.trans.anno.Trans;
import com.fhs.core.trans.constant.TransType;
import com.fhs.core.trans.vo.VO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDate;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import cn.idev.excel.annotation.*;
import cn.iocoder.an.framework.excel.core.annotations.DictFormat;
import cn.iocoder.an.framework.excel.core.convert.DictConvert;

@Schema(description = "管理后台 - 审核计划 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AuditPlanRespVO implements VO {

    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1852")
    @ExcelProperty("id")
    private Long id;

    @Schema(description = "等级", example = "18133")
    @ExcelProperty("等级")
    @Trans(type = TransType.SIMPLE, target = AuditLevelDO.class,   fields = {"levelName", "description"},refs = {"levelName", "description"})
    private Long levelId;

    @Schema(description = "等级", example = "18133")
    private String levelName;

    private String description;

    @Schema(description = "所属范围", example = "1")
    @ExcelProperty(value = "所属范围", converter = DictConvert.class)
    @DictFormat("belong") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer belongType;

    @Schema(description = "年月")
    @ExcelProperty("年月")
    private LocalDate planDate;

    @Schema(description = "排除日期")
    @ExcelProperty("排除日期")
    private String excludeDate;

    @Schema(description = "近期关注问题")
    @ExcelProperty("近期关注问题")
    private String careProblem;

    @Schema(description = "备注", example = "你说的对")
    @ExcelProperty("备注")
    private String remark;

    @Schema(description = "下发人", requiredMode = Schema.RequiredMode.REQUIRED, example = "29174")
    @ExcelProperty("下发人")
    private Long snedUserId;

    @Schema(description = "状态", example = "1")
    @ExcelProperty(value = "状态", converter = DictConvert.class)
    @DictFormat("audit_plan_status") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer status;

    @Schema(description = "季度")
    @ExcelProperty(value = "季度", converter = DictConvert.class)
    @DictFormat("audit_plan_status") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer season;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

}